//1.导入axios对象
import axios from "axios";
import { useUserStore } from '@/stores/userStore'
import { ElMessage } from 'element-plus'
import router from "@/router";
//2.通过axios调用create函数设置基础url和其他信息
const request = axios.create({
    //设置基础url
    baseURL: "http://localhost:10086",
    //设置请求超时时间（毫秒）
    timeout: 10000
})
//设置请求拦截(所有request对象发送的请求，在请求之前都先执行请求拦截中内容)
request.interceptors.request.use(request => {
    //创建store实例
    let store = useUserStore();
    //1.获取token
    if (store.token) {
        //设置请求头中携带token到后端
        request.headers.token = store.token;//在后端拦截器中，通过拦截器HttpServletRequest对象获取token请求头
    }
    return request;
})
//设置响应拦截
request.interceptors.response.use(resp => {
    //定义变量设置异常信息
    let errMsg = "";
    //处理后端响应特殊异常
    if (resp.data.code == 524) { //请求中未携带token异常
        errMsg = resp.data.msg;
        router.push("/") //跳转登录页面
        ElMessage.warning(errMsg); //显示异常信息
    } else if (resp.data.code == 525) {//表示token过期
        errMsg = resp.data.msg;
        router.push("/") //跳转登录页面
        ElMessage.warning(errMsg); //显示异常信息
    } else if (resp.data.code == 526) { //表示非法token异常
        errMsg = resp.data.msg;
        router.push("/") //跳转登录页面
        ElMessage.warning(errMsg); //显示异常信息
    }
    //创建stote实例
    let store = useUserStore();
    //获取响应体中token
    if (resp.headers.token) { //表示当前token有值
        store.setToken(resp.headers.token)
    }
    return resp;
})
//导入对象
export default request;